Software pipelining is a compiler technique that can increase throughput of a computationally-intensive loop by overlapping execution of multiple iterations of the loop. In overlapped multiple iterations, some iterations may be speculative due to a reversal of order of operations, e.g., the order of execution of the operations may differ from an execution order indicated in the loop. An exception that occurs during a speculative iteration can invalidate the result of the iteration. One technique to correct the invalid result is to discard all previous results of the loop iterations and start the loop calculation again (“roll-back”), which can be costly in terms of computational resources and time.